{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gaussian Process Classification with GPy\n",
    "\n",
    "In this notebook, we want to show how to apply a simple GPy classifier and craft adversarial examples on it.\n",
    "Let us start by importing all things we might use to train a model and visualize it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from art.attacks import HighConfidenceLowUncertainty, ProjectedGradientDescent\n",
    "from art.classifiers import GPyGaussianProcessClassifier\n",
    "\n",
    "import GPy\n",
    "from sklearn.datasets import  make_moons\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training a classifier\n",
    "We will first train a classifier. The classifier is limited to binary classification problems and scales quadratically with the data, so we use a very simple and basic data set here.\n",
    "\n",
    "Once the code runs, we see a summary of the model and a visualization of the classifier. The shade of the samples is directly related to the confidence of the GP in its classification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running L-BFGS-B (Scipy implementation) Code:\n",
      "  runtime   i      f              |g|        \n",
      "    00s16  0003   2.013831e+01   1.868027e+00 \n",
      "    00s68  0021   1.648188e+01   1.741965e-10 \n",
      "Runtime:     00s68\n",
      "Optimization status: Converged\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9de49b0da0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(6)\n",
    "X, y = make_moons(n_samples=100, noise=0.1)\n",
    "#getting a kernel for GPy. Gradients work for any kernel.\n",
    "gpkern = GPy.kern.RBF(np.shape(X)[1])\n",
    "#get the model\n",
    "m = GPy.models.GPClassification(X, y.reshape(-1,1), kernel=gpkern)\n",
    "m.rbf.lengthscale.fix(0.4)\n",
    "#determining the infernce method\n",
    "m.inference_method = GPy.inference.latent_function_inference.laplace.Laplace()\n",
    "#now train the model\n",
    "m.optimize(messages=True, optimizer='lbfgs')\n",
    "#apply ART to the model\n",
    "m_art = GPyGaussianProcessClassifier(m)\n",
    "#getting additional test data\n",
    "Xt, Yt = make_moons(n_samples=10, noise=0.1)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Targeting a classifier\n",
    "We will now craft attacks on this classifier. One are the adversarial examples introduced by Grosse et al. (https://arxiv.org/abs/1812.02606) which are specifically targeting Gaussian Process classifiers. We then apply one of the other attacks of ART, PGD by Madry et al. (https://arxiv.org/abs/1706.06083), as an example. \n",
    "\n",
    "### Confidence optimized adversarial examples\n",
    "We craft adversarial examples which are optimized for confidence. We plot the initial seeds for the adversarial examples in green and the resulting adversarial examples in black, and connect the initial and final points using a straight line (which is not equivalent to the path the optimization took).\n",
    "\n",
    "We observe that some examples are not moving towards the other class, but instead seem to move randomly away from the data. This stems from the problem that the Gaussian Processes' gradients point away from the data in all directions, and might lead the attack far away from the actauly boundary."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9e05d1f940>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# get attack\n",
    "attack = HighConfidenceLowUncertainty(m_art,conf=0.75,min_val=-1.0,max_val=2.0)\n",
    "# generate examples and plot them\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uncertainty optimized adversarial examples\n",
    "We can additionally optimize for uncetainty by setting unc_increase to 0.9, thereby forcing the adversarial examples to be closer to the original training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FNXXgN+b3bQNoYTeAwgC0rsUBUQB6RhUih8ICsReUEFQBAULiiAIPxBBERQlIKAgRYqKgBSl916TUAKkb7vfH7MJSXZT2Zbkvs+zT7Izd+aeTWbnzD1VSClRKBQKhSIFH08LoFAoFArvQikGhUKhUKRDKQaFQqFQpEMpBoVCoVCkQykGhUKhUKRDKQaFQqFQpEMpBoVCoVCkQykGhUKhUKRDKQaFQqFQpEPvaQHyQqlSpWRoaKinxVAoFIp8xZ49e65JKUtnNy5fKobQ0FB2797taTEUCoUiXyGEOJeTccqUpFAoFIp0KMWgUCgUinQoxaBQKBSKdCjFoFAoFIp0OEUxCCHmCyGihRAHM9k/UAixXwhxQAixTQjRMM2+s7bte4UQyqOsUCgUHsZZK4ZvgC5Z7D8DPCilrA+8D8zNsL+DlLKRlLKZk+RRKBQKRR5ximKQUv4J3Mhi/zYpZYzt7Q6gkjPmVeQPLMnJ7P3kE5bcey8/1KrFnvffx5SQ4GmxFApFJngij2EY8Fua9xJYL4SQwBwpZcbVBABCiOHAcIAqVaq4XEiFc5BSsqZLF6L++QdLYiIA/02ezLlffqH39u346HQellChUGTErc5nIUQHNMXwVprNbaWUTYCuwPNCiAccHSulnCulbCalbFa6dLaJewov4cqffxK9a1eqUgCwJCURc+QIF9au9aBkCoUiM9ymGIQQDYB5QC8p5fWU7VLKS7af0cDPQAt3yaRwPdE7d2JJTrbbbo6LI3rHDg9IpFAossMtikEIUQVYDjwlpTyeZnuQECI45XfgEcBhZJMifxJUsSL6gAC77XqDgaBKytWkUHgjzgpX/QHYDtwrhLgohBgmhBgphBhpG/IuUBKYlSEstSywVQixD9gJrJZSKvtCAaJanz7oAgJAiHTbfXx9qfHkkx6SSqFQZIWQUnpahlzTrFkzqYro5R9ijhzh9yee4NaJEyAERapUodOSJZRq1MjToikUhQohxJ6cpAXky+qqivxFiTp16Ld/P3EXLyKtVoJVVJlC4dUoxaBwG0WUT0GhyBeoWkkKhUKhSIdSDAqFQqFIh1IMCoVCoUiHUgwKhUKhSIdSDAqFQqFIh1IMCoVCoUiHUgwKryLm8mXO/fsvyfHxnhZFoSi0qDwGhdswJiay/tNP2b5gAVarlZaDBtF1zBj8g4JIvH2b2U88wbEtW9D5+WExGilZrRqx169TsnJler37Lo179vT0R1AoCgWqJIaXY4qNxcffH52fn6dFuSuklEx54AHO796NKSkJAH1AABXq1mXMzp3M6NOHQ+vXY05TiVXaXgB+BgMDPv+c9sOHu194haKAkNOSGMqU5KVEb9/Oynr1+CEkhO+Dg/lz0CCMt297Wqw8c3zLFi7u3ZuqFADMSUlEHT/OriVL7JQCgLC9AIwJCSwdPRqL2ew+oRWKQopSDF5I7OnTbHj4YW4eOoQ0m7EajZyLiGBTPjalnNm5M51SSCE5Lo4Tf/+Nztc323OYkpO5eeWKK8RTKBRpUIrBCznyxRdYjMZ026zJyVzbuZObR454SKq7I6RKFXwd9GXwCwqiSoMG+Ojt3V0ZjZxSSoqULOkiCRUKRQpKMXghNw8dQppMdtt9fH2JO33aAxLdPY1698Y3MBCRoS+D3s+PFgMHMmDaNPwMBrvjUn0MgYG0GzIEfwdj0o2Xkh0REYxv145R9eqxZNw44mJiHI478++/7PnlF25cupTnz6VQFERUVJIXUrp1a6K2bsWawfRiNRopXq+eh6S6O/wCA3lz61a+6t+fK4cOAVC2Vi2Gff89AcHBtBk8mJJVq/LbJ59w/fx5gsuU4dy//2I2mZBS0nbIEAZMn57tPEvefpu1M2akhrtGnjzJ399/z8d792IoWhSAW1FRfNi5M1EnT+Kj02E2Gmk/bBhDZsywU1wKRWHEKVFJQoj5QHcgWkppd+cS2rdtOvAokAAMkVL+a9s3GBhnG/qBlPLb7OYr6FFJiVFRrKhbF9PNm0irFQBdYCBV+vThgcWLnTPHrVvs/O47Lu/fT6XGjWk+aBABwcFOOXd23I6KQlqtFCtfPstxFrOZm1euUKRkyWxXCgC3oqN5oWpVO1+GX2AgT0yeTLdXXgHg/Q4dOL51azpHtr/BwJAvv+TBIUNy/4EUinxCTqOSnKUYHgDigIWZKIZHgRfRFENLYLqUsqUQIgTYDTRDsxrsAZpKKe3X/mko6IoBNAf07jff5MqGDeiLFKH2889T7803Hdric8vVU6f4rFUrTAkJGBMS8AsKwj8oiFG7dhHipU10xAT7J3k5Pv21u+fXX5k5cCCJDqK36j/8MGPXr+dWdDQvVqliFwEFULVRIz787z/nCa1QeBlu7eAmpfxTCBGaxZBeaEpDAjuEEMWFEOWB9sAGKeUNACHEBqAL8IMz5MrPBFevToeICJec+6fwcBJu3EhdjRjj4zElJrLs5Zd59uefXTLn3eBIKaRsT6scipcrh9VisRvno9NRyqbwkmJj8dHpHJ4v4eZNJ0irUOR/3OV8rghcSPP+om1bZtsVLkJKybFNm1KVQup2q5XDv/3mIalyyHEBVzPfXb1pU0pVrWp349f7+9PlxRcBKF2tGoE2X0NadL6+NO3Vy6niKhT5lXwTlSSEGC6E2C2E2H31ahZ3B0W2ZPbE7AwzlUtZJuHLzHcLIRi7fj3VmjTBNzCQgOBggkqU4LlvvqFqw4YA+Pj4MGL+fPwMhtS/g19gIEXLlKH32LHu+BQKhdfjrjvBJaBymveVbNsuoZmT0m7f4ugEUsq5wFzQfAyuELIwIISgcb9+/Ld0abpcCb2/P80GDvSgZDmgLbAx6yEhFSsyaedOos+eJfHWLSrWrYs+Q/Jco65dmbR7N+tmzCD69GnqPfQQHZ59lqDixV0nu0KRj3CXYlgFvCCEWILmfL4lpbwihFgHTBZClLCNewQY4yaZCi39Zszg8oEDXD99GqvVihCCcnXq0HvKFE+LljUt0RTDZaBC1kPLhIZmub9inToMnTUr0/2m5GSWT5zIpq++wpSYSIPOnRn42WeUrlo1t1IrFPkOZ0Ul/YD25F8KiALGA74AUsr/2cJVZ6I5lhOAp6WUu23HDgXetp1qkpRyQXbzFYaoJFcjpeTkn38SdfQo5e+7j+pt2nh1DH+qA/o9IBQYYh+V5EymdO/OwY0bU0NfhY8PRUJC+OzYMYqEhLhsXoXClbg1XNXdKMVQeGnXrh1bt27FldftpSNHGNu0KcbExHTb/QID6fvee/R8880sj0+8fZvze/YQXKYMFe67z2VyKhS5xa3hqor8hdVq5ciWLcRcvkyNFi0oX6uWp0XKMVOnTqVFixYkJiYSGBjo1HOf2bOHiwcPcu38eYQDB70xMZGTO3ZkeY4Nn37Kr+++i87PD6vJROmaNXl+zRqKV8jG9qVQeBFKMRQyrl+4wMQHHyT22jWklFgtFlr07Uv4t99mGq3kTTRv3hyAmTNn8sYbb+T6+KS4ONZPn84/S5bgZzDw0HPP0fSxx5javTtnbKtQabVidlAJ1tffn8pZlCQ5vH49q8ePx5SYiMm22rhy8CCze/RgzJ49uZZVofAUypRUyHj3/vs5vWtXukQwf4OBAZ9+ysPh4W6R4caZM2ydOpXL//5L+UaNaPvaa5SsUSPHx6f4QnJ77ZqSk5nQvDlRx49jsmU++xkMhISGEn36dPpSGrY5LGnmCAgO5rOjRymRydP/zEcfdZgL4mswMHbvXsrUrJkreRUKZ6Ma9SjsiLlyhXP//WeXHZyckMDvs2e7RYYr+/bxRYMG7Jwzh/PbtrFr7lxmNGrExVwo+vfffz9Pc2/95huuHj6MSE7GDy06wpSQwKXDh+17RUiJEAKdry8+Oh3VmzXj3T/+yFQpAMRFRzvcrtPrib9+PU8yKxSeQCmGQoQxMdGh7RxIrUbqan558UWMcXFYbWXFrWYzxrg4fnnhhRyf4xVbMby9e/fm+BgpJavGjkVaLKmd4XzQlENWsVhf377N/Lg4Pti1i9DGjbOco37Pnuj9/e3ntlqpaEuwUyjyA0oxFCLKVKvmMNRS7+9Py7AwAG5HR/PjW2/xbuPGfN6jB0f/+MOpMpzfvt3h9gs7d+bYNFSkSBEARo0aleN5L/z3H8m3bztUAr5o4ajpEIJabdrgFxCAn4MGQ47o8OKLFC1X7k5DIiHwMxh4bOpU/JzsKFcoXIlyPhcihBA8v2gRn3TrhsVkwmw04h8URPHy5ek5Zgw3IyN5t2FDEm7exGw0cn7vXo5s2sSgGTN4YOhQp8jgV6QISQ6K1fkFBeUqj6JVq1Zs3JhNGnQarp4+jd7fH0uGBkgC8PPzw79YMZLj4zEmJOAbGIivvz9Pz5mT4/MDGEqUYOy+ffzx5ZccXL2aYhUq0PGVV6jRpk2uzqNQeBrlfC6EXDt/no1z53L1zBnu69CB1gMG4G8w8P2rr7Lxyy/tbp4BwcHMuHoVXwdmktyy7u232TZtWmrUDoA+MJCW4eF0++yzHJ9n+/bttG7dmsTERAJy8EQfdeIE7zdsmG5eAITg4VGj6Pr22/z17bec2bWLyg0a8ODQoQSXKpVjeRSK/IBKcFPkmjF16nDl6FG77QHBwbz9119UcYKd3GIysfT//o/DK1ag9/fHnJzMvd268cTixQ7t85khpcTHx4epU6fy6quv5uiY/4WFcXDNmlTlIHx8KFKqFBOOHCFIZTMrCgFKMShyzUcdOnB0yxa77b4BAXxy8iQlKjqvIvqtixe5euwYpWrWpHgemwPlNmzVYjKxbsoU/pg1C2NCAvUefZQ+H35ISOXK2R+sUBQAlGJQ5Jq9q1cz6/HHMSYkpG7T+flRq21b3sqFPd9dTJgwgffee8+l5TEUioKEymNQOMRsMrFlwQLe79CBj7p04Z+IiNQba6Nu3egzcSJ+BgOBRYviGxjIPfffz/NLl3pYase8/vrrABw4cMDDkigUBQu1YnAzybGx/D5xIv8tXoy0WqnXty9dP/qIAAddxZyN1Wrlo86dObF9e2regn9QEPf378/wr75KHZcUF8fFgwcpVq4cpbMpX+1phBB07tyZtWvXeloUhcLrUaYkL8RqsfBFs2ZEHzmCxVaSQaKZa55evZpanTq5dP59a9cyrV8/kuPi0m33Cwzkg927qVS3rkvndwUtWrRg165dypykUOQAZUryQo6vW8f1kydTlQJocfQWo5Gvu3cn+vhxl86/f/16O6UAmvP28ObNLp3bVXz++ecAJKf5myoUirtDKQY3cnHPHoyZlJ6wmkz8NX26S+cvWrq0w5BQnV5PkZIlXTq3q2jdujUAc+fO9bAkuefCgQN83rs3L1asyMS2bdm/bp2nRVIoAKUY3EpItWqZxupbrVauunjF0PappxyW1vbR6Wjas2c6Wa7s20fUoUNeb6JJCVl96aWXPCxJ7ji3dy8T7r+f/1at4ubly5z4+2+m9+3L34sWeVo0hcI5ikEI0UUIcUwIcVIIMdrB/s+FEHttr+NCiJtp9lnS7FvlDHm8lXp9++JnMJD2Vpvyu87fnxoPPujS+UtWqsQrEREYihUjsGhRAoKDKVauHGM2bMDfYADgzJ9/8knFinzVti3/a9mSz2rU4Mq+fS6V624ZN26cp0XINT+9/TbJ8fHpFK8xIYHFr72G1Wr1oGQKhROcz0IIHXAceBi4COwC+kspD2cy/kWgsZRyqO19nJSySG7mzK/OZ4BrJ0/yZevWJFy9ikRTDFKnwxASwltHjhDkBpOO2Wjk5M6d6H19qd68OT62AnJx0dFMrV7dztwVWKIEb166hK+XFoK7ffs2xYoV4+DBg9yXT1ppjixZkvgbN+y2+wYE8Pm5cxQrU8YDUikKOu50PrcATkopT0spjcASoFcW4/sDPzhh3nxJqXvu4Z3ISDp/8gnFqlfHULYszf7v/3jtv//cohQA9H5+1G7blntatkxVCgD7Fi2y69UAYDGbObJypVtkywtFbaG+b2bTi9mbyLSvgxAYihVzrzAKRQacoRgqAhfSvL9o22aHEKIqUA3YlGZzgBBitxBihxCitxPk8RrMyclYzWa77T4+PnR84w3GnjrFhMhInpw/n+JOLDeRV2IjIx22tLQYjcRFRnpAopzTpEkT1qxZ42kxckzvd97Bz2a+A23l6OPrS41WrYhTTX0UHsbdzucngQgpZdrH0qq2pc0AYJoQwmGPRyHEcJsC2X316lV3yJpnog8eZMH99/OxwcBHBgM/DxjgsNS0t1GtfXv8ithb9Xx0OkIfeMADEuWclLBVo9HoYUlyRsvHH+fxyZMJLFoUnZ8fVsBsNnPkzz95KTSUNbbPo1B4AmcohktA2ipklWzbHPEkGcxIUspLtp+ngS2AwzZZUsq5UspmUspmpUuXvluZXUZ8dDTftm3LpR07kFYrVpOJo8uWsahTJ6+P8KnZpQvlGzXCN82TrG9QEDW7dKFCkyYelCx72rVrB8C8efM8LEnO6fzyy3x89Chmm7NZSonVYsFiMrH4jTe4cOiQhyVUFFacoRh2ATWFENWEEH5oN3+76CIhRG2gBLA9zbYSQgh/2++lgDaAQ6d1fuG/r75Kl8AGminm+tGjXN6500NS5QwfHx+e/v13Hv7wQyo0bUrlVq3oNn06T/70k6dFy5b8Gra67YcfHJobpcXC9LAwPn/sMdbOmEFibKwHpFMUVu5aMUgpzcALwDrgCPCTlPKQEGKiEKJnmqFPAktk+sfmOsBuIcQ+YDPwUWbRTPmF6AMHHNrpEYIbJ07c9fmllFw5cYLLx465ZAWi9/en9Usv8dzu3YzYvp1mw4Y5zH3wRkaPHo3FgfPcm7mQRSjw5aNH2bV8OUtGj+at+vW5fe2aGyVTFGac4mOQUq6RUtaSUtaQUk6ybXtXSrkqzZj3pJSjMxy3TUpZX0rZ0Pbza2fI40kqtGiBPo0pJgVptVKmfv27Ove5fft4tVYt3mrUiDFNmvBS9eqc2rXrrs5ZkHjrrbcAOOqg2ZC3ck+rVtmOMSYkcPPKFVZOmuQGiRQKVUTP6STdvMmsWrVIvH4dabMd6wMCqNy2LQM3bMjyWDHBvuexHK/9f5Li43m+cmXiY2LS7Q8sWpSZ584RVLy4kz5B/kYIQc+ePVnpxeG1aUmKj2dESAimHDjNS1apwoxz59wglaKgooroeYiA4sUZtns39/bpg29QEIElS9LshRd44pdfsjzOkVJIu33nsmV2vZhByzHYtmTJ3QteQGjQoAGrVuWfBPqAoCBGr1tHoMGA3tcXva8vPmjFFe3GOogYS4yNZdvixWyaPZuokyddLq+icKD3tAAFkWJVqhAWEZG3g+OAv4CqQHXA1uc+5soVTA58F8aEBGIuX86jpAWPadOm0bFjR4xGI35+fp4WJ0fUad+e2deucXDDBkxJSayZNo1Tu3Yh0zil/Q0GHnn++XTHHfvzTz7v3h0pJdJiQUrJQy+8wJNTprj7IygKGEoxeBu3gX9sLxviPe35sYpORwWgHJq+EGi9FGq1aQNoxe9uR0YSULSow6fLwkD79u0BWLBgASNGjPCsMLnALzCQJrZChrXatWPSQw9x48IFEAKLyUSLsDAeGjkydbwpOZnpvXqRlCFaadPs2TTo0oW6Dz3kVvkVBQvlY/ASHJqS4oET0MPSg1+yMEXVLFqUJ558ktsrVyJv3QIpadi7NwPnzSuUCkIIgZ+fX77q0RB19Ci7v/8ec2IiZe67jyvHjnEzMpLy9evTpHdvylavnm78gXXrmPX44yTevm13rlYDBjBy8WJ3ia7IR+TUx6BWDN5MENAIVo3XbOZmk4nPe/bk37VruQycs71O3L7NBxn7Efz4I1N+/51XJ02iR48elC9fPjXWv6DzxhtvMCUfmVP++vJLVr7xBhaTiSSzmRQDko9ez9wxZvju9XTj5Xjp0N+UgiOTY3ZIKbEkJ6Pz9y8014kic9SKwYvIKiophVcqVuRmJj4FHVrK+WngFJBZ8eZ27drRr18/evbsSZUqVQrcjSAmJoaQkBCOHTtGrVq1PC1OltyOjGRCtWqYk5KwAmlv6fPegcw80Ymvx/JS2bIYExLSbfcPCuLZhQtp1rdvjuaXUrJv5kz+mTiR5Bs3CCxbljYffkjdwYPz+pEUXoyKSsqHyPHS7pURY2Jipsf7ofmrOwEjgFeLFePk1q3ExcWxevVqnn76aYKDg/nrr7946aWXCA0NxcfHByEEQghatmzJp59+ysmTJ72+fEdWlChRAtAS3rydw7/9lppAaJf/nKIUrgPpo5QJKFKEoV9/jW9gIDpfX0BTCvc9/DBNeue8FuW+mTP5e8wYkq5dQ1qtJFy5wubnnuOYinQr1KgVQz5jzqBB/LNkiV15bB9SA5hS8Q0I4MPLlzHYbpQZSUxM5O+//2bZsmVERERwLZPM2kaNGhEWFkafPn2oXbt2ulLd3sp9993H4cOHvV7B7Vq0iJ/CwzHGxWEkvXKY9wowHa30aksf6HpnDZjy0BB9+jTbvvuOhJs3adS9O3U6dszxClBKydwyZUhy8H8vds89DHFCpr4ia0RjoS3vY4FgoAbI/1x3zeZ0xaAUQz4j5tIlxjdtSlJsLMaEBPT+/uj0egKEwJyQkJpU5xcURPsXXqD3Rx/leg6j0cg///yTqjAuXXJcE7FOnTqEhYXRt29f6tevj86LSmds2LCBRx55BKPRiK/tidobSbh5k3crVMCUmJhqSkoElpHGrDQQqJn+OEerydxiMRqZGRAADu4BOn9/XsiDr0KRc0RjAQdJ/zSgB+q5TjkoxVCAib95k60LFnBy+3Yq1KlD+xEjsCQlsWrcOI5t3EhQyZJ0GjWK+59+2qn+A5PJxL///svy5cuJiIjg9OnTDsdVr16dsLAwHnvsMRo3buyRG7OUEh8fH+bNm8ewYcPcPn9u2L9iBQsHDMAoBIsSE4lJ+U72ARrg0MfgDMUgpeTrSpWId+CzCqlXj6cOHLjrORSZI4oKbaWQkWCQt5ViyDWFXTF4GxaLhQMHDrB8+XKWLl2aaa2iihUrEhYWRlhYGC1atHB5ApoQAoPBQHyGVqXeRkJCAh3at2enre7VB2+9RZuqVfHR63nw8nC78c5QCikc+e47No0ciTmNE1sfGMijERFUe/RRp82jsCerhzZX3Zdzqhi0rMl89mratKn0Zixms7y4Z4+8tHevtFqtnhbHY1gsFnno0CH5wQcfyEaNGqW2uM74KlWqlBw5cqTcuHGjTExMzNUcgMTXdq5iSHoieQ8ppZSvvfaa1C5x7yQ5OVl2794j9e/w0Ucfue16MSYmyhtnz0pjYqI8/tNP8ptateQMf3/5Xf368vTq1W6RobBDsOPvA8Guu2aB3TIH91iP3+Tz8vJmxXBy82Y5oUwZ+U5wsBwXFCQnVa4sL+7Z45K5rFarPLR8ufy6Y0c5s0kTuXnyZJl0+7ZL5nImVqtVHj9+XH7yySeyRYsWmSqM4OBgOXToULlmzRoZHx9vdx5AIjIc54ukj6Ycrl+/LgF58uRJD3zKzDGbzXLw4MGpMr/55ptuUwhWq1WuHTdOjjUY5FiDQY4LCpLrx48v1A8wnoJGSPQZrl89kkaeVwzKlOREYqOi+LhGDUwZTBeBxYvz9qVL6Xr8OoN1o0ezY+bM1Pn0AQGUCA0lfM8ep8/lDqSUnD9/npUrVxIREcFff/3lcJyfnx/9+vVjcWbZvcWAVzWTixCCfv368ZMXNBuyWq2MGjUqtQ3psGHDmDNnjlud9n9MmcKG997DlMZ05Gsw0HnSJNq98orb5FBoeGtUkvfHHeYj/lu8GOmgUYzVbObQihVOnSv2yhW2T5uWTgmZk5K4ef48excudOpc7kIIQdWqVXnppZf4888/U59erFYrFy9e5H//+x+dOnXCaDRmrhQAbqGF9gD33nsvS5cudYv8mSGl5IMPPkCn0/H555/Tt+9jGI1G5s2b5/ZIri2ffJJOKQCYEhLYkofoNcXdI/+TyNu2J/Xb0qVKITcoxeBE4iIjHXZvM5tMxEVHO3Wu89u3o/P3t9tuSkjg2Jo1Tp3L0wghqFixIiNGjGDDhg137KBZ8bF23LFjxwDo3r07CxcuzDRXw1XMnDkTHx8f3nnnHdq370BiYiLLlkV4LFIr4fp1h/viVXc4RRqcohiEEF2EEMeEECeFEHbppkKIIUKIq0KIvbbXM2n2DRZCnLC98nUefo2OHfFzULTOR6ej+oMPOnWuoDJlUnMW0iJ0OopVquTUubyajIEdvmhhnm/C99/3o08fLQt49erVDB48mNKlS6dmegsh6Ny5M1999RVXrlxxqliLFi1CCMGLL75IgwYNuX37Nps3byIgIGMaovsQQlCmdm2H+8red5+bpVF4M3etGIQQOuBLoCtQF+gvhKjrYOiPUspGttc827EhwHigJdACGC+EcJymmw+o+cgjVGraFN809n3foCDqdO9OxcaNnTpXldatCSpdGpEhC1nv70/L555z6lzexUXgT2A/Upo1l13Kw3cxtKuwIciPH6V/fzPLl2vhnkWLFkVKya1bt1i2bBlPPvkker2e9evXM3z4cCpUqJBOYbRv356ZM2dy/vz5XIUO/vLLLwgheOqpp6hYqRLXrl1j3769BAcHO/fPkEd6TJuGb2Bgum2+BgM9bH4PhQKckMcghLgfeE9K2dn2fgyAlPLDNGOGAM2klC9kOLY/0F5KOcL2fg6wRUr5Q1ZzeqvzGcBsNLJr3jz2fPstPr6+tHz2WRo/9ZRLykjcOHOGRT16EHPmjFZvx8eH3l99Rf1+/Zw+l+exAnOAvWjLBB8gEBgNJAMv2X5mpCYvvyz54osvsrzBx8fHs2XLFiIiIli6dGmmuQ+tWrWiX79+9OrVi+rVq6fGom/ZsoUOHToAYDAYOHHiBBUvbisVAAAgAElEQVQqVMjrh3UpZ7ZuZcP48UQfPkzZ++7j4YkTCW3d2tNiFRLMwB7gBnCP7eW+IpZuS3ATQoQBXaSUz9jePwW0TKsEbIrhQ+AqcBx4VUp5QQgxCgiQUn5gG/cOkCil/NTBPMOB4QBVqlRpek71vk3l6tGjJMfGUq5hQ/T5pGtZ7tkILAXS9kYWQBVgMPA66WuTplCNa9feo3Tp0pw+fZpq1arlatbExES2bt1KREQEERER3LhxI8vx69ato1OnTvminpTC3USiGUiSAAvaw829wFu4qwOCt0Ul/QKESikbABuAb3N7AinlXCllMylls9KlSztdwPxM6dq1qdS8eQFWCgBbSK8UQLMjXQaKAI7Cc/2BjpQqVQqAt99+O9ezBgYG8vDDDzNnzhyuX7+e6vjeu3evw/GdO3dGp9OlmqTq1avHe++9x/79+7E4iFhzN9fPnePC3r2YjRn/lgrXMw0tZC4JMKGtcI8C3hcs4gzFcAmonOZ9Jdu2VKSU16WUKev8eUDTnB6rUGhk1phGoD19jUarL5uiHAOAakB3AO655x6WOKGU9NmzZxFC0KhRIwB27NiRLjHIaDSyfft2Ro0aRWhoKIcOHWLChAk0bNgQvV6fqjBq1qzJmDFj2L17N2azXcFtp3M7KooprVszsXZtpj7wAG+WLs0/ixa5fF5FCjFo/rGMFhojsCmH5zA7ON41OMOUpEczDz2EdlPfBQyQUh5KM6a8lPKK7fc+wFtSylY25/MeoIlt6L9AUylllut1b/YxKFzFcmAt9l0LQoApaAriJrAZrYFBfaAZWvsiLSqpe/fumEwm9PrcL9sjIyO59957uW1rpblhwwY6deqU4+PNZjP79+9PrSd1/Phxh+MqV66cWk+qWbNmTqsn9WGTJlw6cABrGiXkZzDwyubNhLZo4ZQ5FFlxDXgFxw84ZYAZWRy7EfgCiELLgvs/YBB58U24tYieEOJRtHWSDpgvpZwkhJiIln69SgjxIdAT7Vt9AwiXUh61HTsUSFnjT5JSLshuPqUYCiOJwCS0m34ymk1WB7wKZN+lzWq1otPpWLhwIU899VSOZ42JiaFxkyacO3sWgOXLl9OnT59cS58ZFouFI0eO8PPPPxMREcH+/fsdjitTpkyqwrj//vtzFfZ6+dAhPmnRwq7bmxCCpk88wdAfsoz1UNhxBjgMlCLtw0fWSLRrNWNYtC/aqvbJTI7bxp0AixQC0PxqQ3Musg1VXVVRADEBu9HssiWBdkDOo5uFEJQoUSJbBzJoUUoPPPAg//67B4AFCxYwZMiQPMicN6xWKydPnkxVGJld78WKFUtVGA888AAGB6VQjm7cyNzHHiPp1i27fTXatOH1rVudLn/BxAJMALZyJzIuGC1av3wOjj8NTLSdx4h2gy9j2xaYyTGD0a73jBjQ3LW5W/0qxeBELm/bxvGlS/Hx9aX2gAGUsdmXFfmL559/nlmzZmUZtpqcnEyPHj3YsGEDAJ9//jkvv/yy1/TFllJy9uxZVq1axdKlS/n7778djgsICLizwmjShEm1amHKkJXvGxBAl3Hj6Dp2rDtELwAsR1MCaf+OPmgr1q9zeI5Y4C+0AM3aaO7WrG7uDwFxDrb7ocX0FM/hvBpKMTiJTS++yKEFCzAnJCCEQBcQQMuxY2mRhwgXhWeJjo6mbNmynDt3jipVqqTbZzabGTToKX78UXNQjx8/nvHjx3uNQsgOKSWXLl3il19+ISIigk2bMndo1gBq6nTULl2aSYcPZ9r6VZGRp9Ce+jPiB/wEuCJachham7eMBAPryJkZ6w5KMTiByF27WNq+fbomJgC6gAAGHzlCsdBQl8ugcC5CCAYNGsR3330HaCabF154gdmzZwPwwgsvMH369AKVhxAVFcXq1av5esYMtmUSZgvQq1cvwsLC6Nq1KyVLlnSjhN6PowcEKVOSAgPQIvBdUYpmD5pvIqOPIZzM/RKZ4215DPmSkz//jDkx0X6HEJxZvdr9AikccAstDDBnXdpCQ0NZtGgRUkrGjRuHTqdj9uzZDBgwEJPJxIwZMwqUUgAoW7YsQ4cO5Zm6dXnR359wtNvK00Bnf3/a2UyjK1eu5KmnnqJUqVLpyoN07dqVr7/+msjISE9+DI+R2apRiG2234oBFV00e1PgU7Sm375ovoxR5EUp5Ab3pNvlU3T+/vjodOlC/ACEj4/DyqYKd5IS/30N7fnGCoQCrcnqeWfatGn07t079ebfpUtXVqz4Gf8C/v9Mjo/nv2XLMCffefIMAKonJ1M2MZE/01gObt26xYYNG1i6dCkRERGsXbuWtWvX2p2zQ4cOhIWF0aNHDypVqpRvzG7OJQB4F9eWtWgBuDfnRJmSsiDmxAkWNWxot2rQBQTw7IULBNoyahWe4E/gHJpCSEEHNALqOTxi/vz5DBs2DIDq1auzf/9+goKCXCynd3ArMpJ3qlVzWBa+SKlSfHL1arbniIuLY/Pmzan1pBIdraaB1q1bExYWRq9evahWrVq+VxhZ92aOxjW+BdegTElOoETNmjwwdSq6gAD0QUH4FimCPjCQrosWKaXgUSzYK4WU7fahfcuWLUMIwbBhw6hxzz0A3L59u9AoBYCiZctSxME1K3x8uLdjxyyPtdhWzEWKFKFHjx58++23JCQkpGZ7JyQksHbtWp555hmKFy/Otm3beO2116hRowY+Pj6pJqlmzZrx0UcfcezYMawOSsbnT/KPUsgNasWQA+IjIzn7228IvZ7q3bsToKI4PIwRWILj8gB+QH9Ay05+5JFHAChRogRHjhyhbNmyjBw5kjlz5uSqnHZB4OCaNXzVrx/mxESklOh8ffELCmL07t2UrlHDbvy2OXNYO348cVFRFK1QgW6TJ9N8cM5bpiQnJ7N9+/bUAoRRUVEOx9WrV4+wsDAee+wx6tat63U+nqxXDBItBPUA2oNJXbQcG+9ERSUpCjg/A1p5Cq14b+acPXuWqlWrpr6PjIykfPnynD9/nsqVK2dxZMHj/L//suGTT4g+cYIabdvSadQoQhz8DbbNmcOq115Lly3tazDw+Fdf0XTAgLuSwWg0snv3bpYtW0ZERATnz593OK5WrVqEhYXRt2/f1FpTnsJxVJJEq+KzBM3HkHIvfdj28j6UYlAUcKKA3xFiUKYjjhw5Qu1MOpYJIRg8eDDffPONa8TL54wvX55YB1FIJatXZ+ypUy6Z02w2s2/fvlSFceLECYfjqlatmrrCaNasmdvapAoheOedd5g4caJtSzxa1nLG+ke+aP1BnBGpZLSd3zlmT6UYFAUeKW/h45N55mdW13blypW5ePFioTMnZYaUkqunT6P396d4hQqM0jlOnPLR6/nUlFmlW9dgsVg4dOhQanmQgwcdJXxBuXLlUrO9W7Vq5fRIsxQ/1bx582xbdqJlQ2csYS6ADqRU9s0bcWjZ1Pts78uhJbvZm/xyg3I+KwocFy5cYOLEiZQvXx4hRJZKITumT58O4BU9EjzN8b/+YnTVqkxo0ICxNWsyqXlzgsuVczi2pANfhKvR6XQ0aNCA8ePHc+DAgVSnd0oBwsmTJ9OkSRMiIyOZOXMm7du3JyAgINXpHRISwvDhw1m/fn2mkVQ55fLly2neZeZAl2j+hrwi0SoG77Odx4JWuPpjtCKSrketGJyI1Wol+tgxfAMDKamyonOJRKsh8wtwk2vXSrFokQ+zZ0c4LFHdqVMnwsPDeeyxxzI/o9yBVn7bvrBcSrXVH3/8kccff9xZHyLfcfPyZcbdey/JcXfq8QgfH4KLFUOfnIwpg49h0OLF1O/d2xOi5hgpJWfOnGHlypUsXbqU7du3OxxnMBhSVxgdO3bMNkpNCEHDhg3TNGm6DXyAfSl4X+A5oCp54wxaw8uMrWr1QBcg7617lSnJzRzbtImFgwaRdPs20mqlTK1aPLN8OaWqV/e0aF5PbGwsS5eOY/bs79m9+5rd/hYtWhAe/gyPPVad4ODLaF+8BkAdhMh80atVcPcDeuNIOQghKFeuHFeuZCyFXHj45f33WTNpUrrEN4CA4GAefv55DkZEEHPuHCWrV6f7xx9Tr1cvD0l690gpuXjxIqtWrSIiIoItW7Y4HKfT6QgLC6Nfv3506tSJYsWKAdr1Urp0aaKjo9OM3gasRFs9WNFu3vejXXN55R9gPo5b1TYBXs7zmZVicCM3zp9nUt26GNM0kBc+PhSrUIEJZ8/ik4m9tjCSlJTEr7/+yuzZsx0Weqtduxjh4bUYMKAapUoFoD3xvwL8gPaElrJE16NVteyUScRISrVLH6AO0NJuzLPPPsu8efMKtZ/hm2HD+Hv+fLvtfkFBPDl9Ou1sCYEFncjISH799VciIiJYt25dlmMXL15Mly5dCAkJsW25CuxFWznU5+5rJkUC47B3avsBfYBH83xm5WNwI9vmzcOSwSEnrVYSb93i2MaNHpLK85hMJtavX0+fPn1S7b2BgYH069ePTZs2UaFCBd5//30uXNiHlM8g5f9x5EgvXnqpjk0pAJwHjqHFiqe125pt22/ZbM5XkXIhUn6dRimA9hTnuFtsSnRJertx4aJ2hw74Fylit11arVRv1coDEnmGcuXK8cwzz7B27dp0rVqvXr3KwoUL6dmzZ+rYgQMHUrJkyTT1pMrQrds0FiyIJDravuNe2rpTKa9spEFbEac9lw9a+Y0H7/7D5gCnKAYhRBchxDEhxEkhxGgH+18TQhwWQuwXQmwUQlRNs88ihNhre61yhjzuJub8eSwOmqtLq5VbheSmY7FY2L59O4MHD069+P38/OjcuTMrVqygSJEivPHGG6lZrylloseNG0elSo5DSjXKAhewt+OCdvmmmIECyNwZ6Nh2XL681lzl3XffzclHLJA07dePkMqV0aeJ4PEzGGjQowcV77vPg5J5B6VKleKpp55i5cqVtLC1QJVSEhMTw48//ki/fv0QQrBmzRqGDh1K2bJlc6QEslcOzwE90BpRBQGt0JoEuSdb3xk9n3VoPZ8fRitzuQvoL6U8nGZMB+AfKWWCECIcaC+lfMK2L05Kaf/IkgXeZkra+d13/Bgens6UBOAbGMionTvZt3Il2xcswGo202LQIB4ZPZoAB09p+QUpJQcPHuSrr75i1qxZDiN7RowYwfDhw2nUqFEOM1m/R+vXnFbB+qGZkW4C/2F/409pi5iSoLUGiM4wTg90Aio4nLVChQpcuXKlUJuTEm/fZt2UKexasgTfwEAeHDmSB0eMUCbQDPTp04cVK1Zkea3ExsayadOm1GzvJAe1qVLwxDXnNh+DEOJ+4D0pZWfb+zEAUsoPMxnfGJgppWxje5/vFYMpOZlPmjTh2unTqUXK/IKCaNCnDzcuXODszp2YbGFyen9/ytauzejdu9F5MJMzp6REeMyfP59Zs2YRExNjN6Z///6MHDmS1q1b30V2qhUtJnw9mm21ODAAaI5WWnsx6VcNAigCDOFOZctktIqr0WirCYlWmTLzFcnSpUt5/PHHsVgsXleKwZ3ExcSw31ZBtWHXrgQVz3socEElJx0AM5J9OQ33klPF4Iw7U0W0tX4KF3Hk6bvDMOC3NO8DhBC70b71H0kpVzhBJrfi6+/P6zt2sGnqVP798Uf8DAbahYdT8p57mNWtW6pSADAnJ3Pt1CkO/Porjbww7C8yMpKFCxcye/Zszp49a7e/W7dujBw5kkceeQQ/P3t7at7xAcKAvmiKwY87N/xiQDc0pWFGUyIhtm1pv3j+QFe0jNQk23FZX+J9+/YFYMWKFam/Fza2LVnC3KFDU1cIFouFEfPn0/pJ19b8z29UqOB41VkQcesjq9DqFzQjvQelqpTykhCiOrBJCHFASmmXcy+EGA4MB+zaMnoDAcHBPDp+PI+OH5+67ffPPnPoe0iOi+PsP/94XDHcvHmTJUuWMHv2bPbv32+3v127doSHh9OzZ083ViL1QbvBZ6Qq8AxwA82EVDSLcwSRU1usznYzfPnllwulYrhx6RJznn7arh/0nKFDqfPAA5QoRDfD7ChMisEZa+dL3DHygharZRcGIoToBIwFekopU4OmpZSXbD9PA1uAxo4mkVLOlVI2k1I2K106f5S6LVG5MvqAALvtfgYDIVXzmvySNxISEvj+++9p165dqlOsRIkShIeHs3//fho0aMDs2bOJiYlJjcj4888/6d+/vxeVpxZolSuzUgq5Z8iQIVy8eNGp58wv/LN0qeMdUvJPRIR7hfFy8qIYMjMXebtPyxmKYRdQUwhRTQjhh9ZzLl10kc2vMAdNKUSn2V5CCOFv+70U0AY4TAGhQa9e+AUG2tkZdb6+NHPhMt1oNPLrr7/SrVu3VCUQFBTEwIED2bp1K6GhoXz88cepTlcpJfv27WPkyJEUL4S25ffffx+gULauNCYm2nUoBLCazRjvsnxEQSOvK4a04a8pL2/nrhWDlNIMvACsA44AP0kpDwkhJgohUoJ/p6B5CpdmCEutA+wWQuxDC0n5KG00U37H19+f17dupXKTJuj9/dEHBFD+vvt49Y8/MDjpBmyxWPjjjz/o379/qhLw9/enR48erFmzhpCQEMaOHcupU6dSL8ozZ87w5ptvUi6TejiFjUqVtISk8WnMgIWFxt27o3NQnVTn60vjbt08IJH3UqZMGUCrAlvQUZnPbuJ2VBRWi4Xid2GntFqt7N27l7lz5zJnzhy7/Tqdjueee45nn32WevXq5fuWiu6kbNmyREdH54unOWfz3WuvsWnOnNQVgp/BwEMjRjDos888LJl3kZiYiMFgICYmJt+urN0ZlaTIAUXLls3VeCklJ06cYN68ecyaNYv4DDkSAIMHD2bEiBG0aNEi1YmqyBvTp0+nf//+WK3WQhe2+tTUqTTv25dtP/wAQJsBA7i3TRsPS+V9BNj8hblTDDfR+pOfRavX1RKtJ7l3P7SpFYOXcPHiRb755htmzZrlsKhbnz59GDlyJB06dHBbY5LChMViQa/Xs2LFCnrl40JxCtcihODvv/+mdevWORgdC3yFll+Tcp/1RcutcU9pi4yoFYMXc/36dRYvXszs2bM5etS+eX3Hjh0JDw+nW7duBAYGekDCwkfasFWlGBRZkfPaWjvQMvnTPnyb0KqntkQr4+KdKMXgYmJjY1m2bBmzZ89m586ddvubNWtGeHg4YWFhFC3q3DBMRe4YNGgQixYt8rQY+RopJTcOHiQxOprSTZvin09t8VmRc8VwHsf1u3TANe5UYd2DVs4lBigN9AQ8W6dKKQYnkpSUxJo1a5g9eza///673f5atWoRHh7OwIEDyS+5GN6NBa2pSRIQihb4lncmTZrEokWLiI6OTo1AUeSc+MuXWd21K7dOncJHp8NiNNLs3XdpMmaMp0VzKjlTDBLHiZqgXbfBtt93Aj9yp8T2FbReDEPxpHJQiiGPmEwmtmzZwv/+9z+WL19ut79cuXKEh4czZMgQr8zUzv9EAd9wp36SBXgAaJ/nM6b8nyZMmMCXX355V9IVRn7r1Ysbhw4h0xRV3PPBB5Rs2JCqj+a9h4C3kb1iSECr7WVfV0xbLVRGK9ci0VK+MvZdMKE1/1GKwaOICQ4avYy/Yxe0Wq3s3LmTOXPm8M0339iNNRgMhIeH88wzz3DvvffeVZjozePHOTx3LnEXL1Kla1dqPvkkOic3Nc//WIGFaDWR0vIXUAXIe9e8kJAQZs2apRRDLrl16pSdUgAwJySwf9q0QqYYVqP1Zs5oRhLAPWgVgUF7mInN5Bz2nQzdSaFSDAmXL3N540b0QUFU6toVfWCgvVKQQDSIVgLff30xmTJqc63z14gRI2jcuLFTQxvPrFzJ7/37YzGZkGYz5379lX1Tp9J32zZ8vaYshTdwEft+uKA9ae3ibhTDF198waBBgwpl2OrdkHzjBj6+vlgcZEsnXr3qAYlcR9aKwQycwrFvIRBI26NchxbCah+KrvVh8ByFRjHs+/BD9k2ciNDrtSd6IXh49eo7Aw4KiEgfumvCxBNPPMHIkSNp27btXZSUzh6LycSmp5/GnLYSa3w8t06c4NDs2TQaNcplc+c/jGQeB555/XvHRKE9tVUADDz55JMMGjSINWvW0L1792yOVaQQUr8+OAh99/H3J7RHDw9I5DqyVgyZNYuC9B0IQbuGu6KZk9IW2/RFqxzsOQqFYojesYN9H3yAJUMFyd979ND6wAAESrgXrYTfPYA+vTnJ1Vzftw/pINXekpjIySVLlGJIR2UcfwF90ZKHckIs8C1av14fUnwUOl0nQAtbVYoh5+gDAmj7xRf89fzz2sONlOgCAwksU4aGr77qafGchsFg4NatW1mM8EOLLIrKsF0ANR2Mb2f7+RuabyIYLSqpyV1KencUCsVw4uuvHS5xpTXNzaWG7eUh9AaDnX02Bd/gYIfbCy/+aE9Uq9GW7hJNKZQFGubwHN+jNV1Pq2D+AsrRv39/frBlARcGHPnEpJREnjrFprlzuXbhAg07d+b+J57Az0G14BRqDxlC8dq1OTB9OnEXL1K1e3fuGzkS/2LFXCm+WylfvjynTtl1BchAd+A7tIcNC9q16Q90cDBWoAVNtLON9Y5bsndI4WJM8fEOl7kOt3mIEnXqUKRyZW4eP55OLn1QEPWee86DknkrTYDywG60J63aaFEcObmkb6JVhs+46jABfzN58mR++OEHrl69WuDDirPqSfyUwYDFZMJiMrFn1Sp+mTKFD3bsyLItbblWrSjXqpWrxPU4OVMMZYGRwD40J3JFoD6Zh6+CpiC853ZcKLxr1fr1Q+/AeWs1mUh66YbDY9xpRgLti9j1l18IqlAB3+BgfIOD0QUEUGfYMKqHhblVlvxDebSG6U+grRRy+sVKJPNLP4HQ0FDgTjnuwooxIQGLLfgiOT6eqFOnWDNtmoelchZJaCvEP9AeLHJGzktvF0HrItALrTdZ/oos9B4V5UIq9+xJuQ4diNy8GXN8PEKnw8fPjxZTp+JfooTblUBmFK9Zk0HnznF582YSoqMp37YtwSoHwgWUwbFi0JHSH7po0aLMmDGDL774Ai0K6ghapEgjCsnXxg5TUhLbf/qJvuPGeVqUu2Qb8BZ3AhgswASgU7ZHFpYuboXiCvfR6ei0ciUXf/uNcz//jG/RotR8+mktksLL8NHpqNQp+wtUcTfo0J7klnPHR6FHCx3UnIFffPEFQ4YMQcrPEWIb2k3EB62+zSQ080D+xlFP7+zIyoyUP7gFvIF99Nq7aIELWfcoKSyKoVCYkgCEjw+Vu3Wj7bx5tJw61SuVgsKdNASeBRqg9ZPuALxMSlmNgQMHArB27XK0UMJkNBPUTWCy26V1JlarlT59+lKtWrUsx4kMeRz+QUE8ku/9XZtwHOosgfXZHq0UgyJHmJOTuXbqFMlxcZ4WRZFrKqH5J0agKYY7lWxTclZeeeW/DMfYMiDJaSE172L9+vXodDpWrPiZKVOmZDk2pGJFAoKDCShSBN+AANoNGkRbm8LMvyRwp4xKWkxA9t/hwqIYnGJKEkJ0AaajrdHnSSk/yrDfH62GQVO0XPEnpJRnbfvGAMPQDH0vSSnXOUMmVyOlZPOUKWx4/32klFgtFlo8/TR9pk932CpRkf94/PGa/PTTCQd7fEifkOT9xMbGUr58eeLj4yldujRnzpwhKCiIN954I9NjZpw5w6HNm7kZGcm9bdpQJpsVRv7gfsBRuZMAoG22RxcWxXDXKwYhhA7tL90VqAv0F0LUzTBsGBAjpbwH+Bz42HZsXeBJtDjDLsAs2/m8nj2LFrF+4kSS4+IwxsdjTkpi17ff8utbb3laNIWTSFEKQqxKfWn4oyXZ5Q/ef/99ihYtSnx8PJs3byY6OpqgHJRY8dHpqN+pE+0GDUqnFFJ6i6d95R+qA31JuzrUfu+AFlKaNaVKlQLAaMxfDwa5xRmmpBbASSnlaSmlEViC5tlLSy+0NFOACOAhoV1NvYAlUspkKeUZ4KTtfF7PhkmTMGZot2lKSGDbnDmpIX6K/Evm8f2rgNfQFsfezdGjRxFC8O6779K//wAsFgvt27e/q3NmlfeQf3gd+AztWfYR4ENgIjlptxlsSzaNjc2s+F3BwBmmpIrAhTTvL6K1J3I4RkppFkLcAkratu/IcGy+CPeIjYx0uN1qNpMcF4ehhGeLYClcSSNPC5AlFouFhx7qxB9/bAHgwoULVKpUKeuDChUC7RaV8TaVPX5+fgBcvXqVkiVLOlcsLyLfOJ+FEMOFELuFELuvekG1xsrNHLdNDSpVisAC2LXK+7Ci1ax/Hq2pyQdoTXtcQf55Gv7555/R6/X88ccW5syZg5QyS6WQWc/3/NgL3p3kvItb/sQZiuES6Q2ulWzbHI4RQujRulRcz+GxAEgp50opm0kpm3lDmYIen3yCn8GQbgntazDQe9q0fLaszq8sBH5FiySxACfQTAKu+MJ6/03yxo0bCCHo27cvNWvWIikpieHDh+foWCklhw8fBiA5OVkphRygFEP27AJqCiGqCSH80JzJqzKMWQUMtv0eBmyS2tW3CnhSCOEvhKiGVn7QvjGyF1KpSRNe2r6d+3r2pFilSlR/4AGGrVpFo379PC1aISAW2Ip9ZJAJrbBe4UFKyahRo1LNGv/88w/Hjx/DP5fNnWrX1jK+N27c6HQZCyIFXTHctY/B5jN4AViH5pGbL6U8JISYCOyWUq4Cvga+E0KcBG6gKQ9s434CDqMFFz8vpXRcYtQLqdCgAU8vX07i9ev4FS2KXnVacxPRaJduRie/FTjrlBmklJlWHb3DDbQeveXQXGbuZe/evTRu3BiA8PBwvvzyyzyvVlOOmz9/Pl27ds10XM7+LgWf3CsGK1pypAEtNNa7cUoeg5RyDbAmw7Z30/yeBDh8lJZSTkKrMZDvOP7jj/zx8ssk37wJQlD36ad5cNo0dDYHlcJVlMZxkpLAmWGkmd/szD7siAgAABorSURBVMActMWy3va+CRCOVmLZtZhMJpo3b8G+fXsBiIqKokyZMnd9Xh8fHyIiIrIdl6IcPv30U15//fW7njc/kjvFsAtYipY9L9GavgxE693gneQb57O3cWHTJjYMHUpCVBSW5GQsSUkc+eYbNoWHe1q0QkBRtIiSjF8sX+7003Uly9DKfZvQymSYgH+Bn1w+88KFC/Hz82Pfvr0sXrwYKaVTlALAsGHDcjQupR3uqPWjEBOEw57pBZ2cK4bjwCI0X5gJ7SHiP+5E73snSjHkkZ0ffIA5IX25XnNiIse+/57kLDs8KZzD08DD3FmWV0ErjuaOsMyNOPZvbHLZjJGRkQghGDx4MM2bt8BoNDJgwACnzjF06FBAC3fNjMyUQGFTDjlXDOuwN3magQNovjJHSLQVRle00t1vY98RzrUoxZBHbp0+7XC7j15PQpR7/4mFEz3wOJpJZwHwPlDLTXNn1lc6iax7/uYeKSXPPPMM5cuXB2D//v3s3PkPvi4ou9K8eXMAdu3a5fRzFzRyrhiuZ7Jdj1bp1RGT0MqAH0frMrgMre+I494xrkAphjxSrmVLu+qTKageCu7G3ZfxPZlsr44zZdm2bRs+Pj58/fXXjBkzBqvVSn0XVgXW6bRs7gULFmQ/uLlP5n+GAk7x4sVJTk7O4egaOL4mrGh9QTJyDViMZqJMwYy2uvguN2LeFUox5JGW48ejNxggTYSG3mCgxTvvoM+iL66iIPB/aCaslLIYOrT6SUOccvbExESqhobSpk0bhBDExMQwefJkt+XHzJ8/P/tB3ayO72uFgNwV0uuK5gtL+7/zS7M9I0dw3O3NSPoiEa5FKYY8UrJuXfr9/Tehjz5KQEgIIXXr8tBXX9HszTc9LZrC5YSiJdN1RHtsbo/Wo6HGXZ955syZGAwGzp87x6pVq7BarRR3Yyb9Y489htnsKOJLAZov5XDS4dTfs/etlAJGo0WtFUXzgQ0COmcyvjz2PgnQHj6q5kXkPCHyY/xxs2bN5O7duz0thkLhNM6dO5faa/qRRx5hzZo1qaYdd/Lbb7/x6KOPYrVaMy+Y5+Bm6C3tcV1J6uf+GdgHvHdnn3M/fz8053RaBRGA1nHw3rs6sxBij5TScT2fNBSK1p6KwkocWmOWUnjr4thqtfL440+wbJmWP3D8+HFq1qzpMXkeeughAI4dO5aaDZ2RwqAEsqQimmJwGV+hVYDdhnbdFkVbkd6dUsgN3vltUSjuinhgGlp57HeBV9HyDLyL33//HZ1Ox7JlEXz44YdIKV2iFKTViikqCmtSZtFUd0ipHvrtt94dZ+9RmgMutRgXRysWsQOt3ejfaP0i3IdSDIoCyBfAIbRoDiNaRMdc4JwnhUolLi6OYsWK8fDDDxMSEkJsbCyjR492yVwxS5dyqGJFDoeGcqBECS6MHIk1BxE1OXJAF1YEWmWLdOxDK3nhTIqhLU/cf5tWikFRwIhCq5eUMUnLhJZs5FkmT55McHAwt2/fZuPGjVy/fp0iRYq4ZK7YLVs4P2QI5shIZFISMimJGwsXciGbqqvt27cnOjraJTIVXOajJaL9QH6oxpsdSjEoChgxOHadSbTie57h+PHjCCEYO3Ysjz/+BBaLhY4dO7p0zqhJk5AZsvNlYiI3f/wRc0xMpsfltDRGYUOOd/w3k+OHo+UdmNHMPtvdKJVrUM5nRQGjEo4L7OnRWpK7F4vFQufOnVPLWZ8/f57Kld3TL9p46pTD7cLPD3NkJPpMugz27t0b0LJ7cxezX9BZgRz/Mumz26XtlVIixQj8DrR2s2zORa0YFAWMImg1lNImD/mghft1cqskK1euRK/Xs3HjRmbNmoWU0m1KAfj/9s49Sor6yuOfOzAwgNEwgAMRMI6yRkVBHY3GxBg10RgimIfRPT7BJZqz50R310XXnHjyMDE5q3msWR9HFCOCEoMr5mhMCGbdFcSwioDGB6IiyENBVAyvmbn7x612qnuqn9XT1TVzP+fU6Z6qX1XdrumuW7/7u7/vZfBxx0HU7PzOTgYEqbFRZEJbc+bM6SHL0spzdJc8EbpX+NtB2nHH4PRCvorVhRoLNAOfwbRn9q7J2d955x1EhClTpnBAays7duzgsgRUd0deey0NObPzG4YMoeU736Fh0KCi+8+cObMnzUshpQRY+lHvNcFLwR2D0wsR4HhsBtK/Y04iOmxSOZ3AUkzE75fAXFTXM2PGDJqbmwFYsmQJa155haaEJFKaDj6YcUuWsPekSfQbNoyBhx7K6FtvpaWEDKgjjjiCF154oQZWponj6O4clK5eRCPwEUzuIt34GIOTMl7F1FTXYlIUZxORO1gDHqer8CCsWLGcCRNMBnv69OnccsstVdA2ehUrVdoOfIFKxkgGjR9P64LcSrvFmTp1KpdffnnZ+/Vuvoh97zJpz4L1QsdgqaqHYL3TJL6P1SWWJIaINAP3YeIxrwFnq+o7OW0mAjdjV7ADuE5V7wu2zQI+S5f+7EWqurzYeV0So6+yCKt81Y6lnw7GtGUWYTnftWIXcDvQwZ49HXzykzfyzDPrANi48Ue0tByDFRL6SIxz3IXpMbVjT6QDsBoUM+IYXjKbN2+mpaWFbdu2sc8+tby2aWAt8CZWSbCV7mMM9UupkhhxQ0lXAX9S1XFY9ZKoPurfgAtU9TDgdODnIhJWBbtSVScGS1Gn4PRVOoFv0lUxDeyrtQ74jxrb8h7Qj9mz/8KAAf/EM8+s4+67z0P1F7S0DMEUMudgkhyVsBGTQNhJl2PYifWUVsU3vwQyVeHmz59fk/Oli7FYWOlA0uQUyiGuY5hMV426u4ApuQ1U9SVVfTl4/yaWTD4i5nmdPsdqzBHksgt4sKaWbNq0A5HLOP/82Rx99Bh2776R8847JtRC6Sr3WQkLif5p7sZCS7XDB6D7JnHHGFpUdUPwfiPQUqixiByL9YnDCdbXich3CXocqho5X19EpgPTAcZ6IZw+yCC6z2bOMKTHzpqlJKrAQ3x4v1++/GomTBiZZ89OrDdTCflUVaXAtuqz33778cQTT9TsfE79ULTHICILRWRVxDI53E5tsCLvgIWIjMJKEF2sqplh/KuBT2CyVM0UCKCq6m2q2qaqbSNGeIej7zEG+6rk3hgHA//QI2fMcgpvYBmvTwMnQGdnOxMmTCa62EqGSmPznye6RGgjcGaFxywfnwHddynqGFT1VFUdH7E8CGwKbviZG3+k5oCI7I31ga9R1SdDx96gxi4sgHpsNT6U01u5G3MQewXLQEy7/tyePe3vG0zsEuzR5fMg0g8bYL4UiznnOqz+WHGWShgOXI99vqbgdSDwbWpX1xouuOACAHaWoMqaPIqFGr3IUDWIG0pagCWJXx+8dgv2isgArLTFr1X1/pxto1R1g1he3xRqNbLmpJQx2CP7Yixy2YYlxPUw+ymcg3VYIvki8EcsjVGwn9VJWMZUpZwFnIAJ/+3BehG1mzUN0NraCsCjjz7K5MmTi7ROkueAhzHHIJhDPp3Kbm97gKewaPdITNqiZ0QO65m4juF6YJ6ITMN+FWcDiEgbcKmqXhKsOxEYJiIXBftl0lLvEZER2H9zOfb45TgFaAA+XdtTHl4spXsgMAnLHNqJZWZXY+7ovsD5VThOZWTmYcycObOOHcOrWGWzcLWzZ7CeQ7dcmCK8D/wgeN2FhQkfxCLeo2NbmiZiOQZV3QKcErF+GXBJ8H42MDvP/j0rL+k4NaUpWN7FnjgVOAAbPksngwYN4qGHHuqho28H3sKuT6XjMf9N9xrJe4AVWK+hnFnnD2DqvJkkh4ww3u1k1fHsA7gkhuPkIV8Jy8KlLVcA92LhiKeA3wSv6aRnBqA7sevyfayM5XVYtnsl4wNb86xvwJ78y2EZ0Zlv64lOle69uCSG4xSgvPrG72Na/OGbSwcW2jgQGFZFy2rDxRdfzE033UR7ezv9+1frdvEYdhNup8sZPI8NWX6lzGONxnpouf8nxRIC1mMhucYSjlXo8/WtZ+i+9Wkdp0d5Lc/6TrKn7qSHiRNNKXTx4sUxj7QBmAX8EJuyFFVhbynRabqFOInuN/3+wfJzTOTwB8DvSjjWpyOO1QAcTHkhqfTjjsFxqkaUNn94W/poCOo53HnnnTGOshG7Qb9EV0imke4pvu3kn8SYj32x4cyDsJv38ODYuTURnsKy2QrxZaxnNyA4RhPWy+t78zliieglhYvoOfXJB1ieRe7NrR823yKdg9CZ7KTK7xWzMf2oqHBPWOhgJPCvFZ4jw9uYDHoUTVhd5kIosAYTyhuBKdr2nufnWonoOY7zIUMw2eV+wdIQvGYm9qeTc8+NO4FwHflFETK9rEaswFJc3i6wbXeBbWF7DgQ+B4zHQluPAFdgaatL4xqYCnzw2XGqyqHYTOg12M3w49RWErz6TJs2jblz56KqeWpMbMdCN81Eazl9FFOkzaUBmwQ4CjiZeBMCMxTSUSu3gl8HcDmwEpufAhaO+gbwrfJNSxHuGByn6uwFHJG0EVXjxBNPBGDVqlUcfvjhoS07sLTTV+nqJX2J7p/9FCycFJ5v0IiVwDyrytYOBsYBL0dsK1dn6glMjCEsCbITmItlT+UTUEw/HkpyHKcgjY2WqTNr1qycLXMwp9CBhWl2YDOF38hpNw6bhTyEroyho7HB3p7gfLLLcO6FFXg6qMzj/C/dB7HBHOBfKrYuDXiPwXGckrjjjju44YYbgr+2YnMEotJOn8DEpcIcCUzABuibKG1eQRzOCJY47I05gdzPKMSrzlf/eI/BcSrmbWxgcj4WuqjHDL/XgJ8B/wxcg9lbbkoonHbaaWzbti205n3y14bYlmd9A3ZD7WmnUC2+TPSzcz/g+BrbUlvcMThORTyFTZx6GKu49ivgDurLOWwEbsFCO4qFRf4M/LbsI02dOjVnTQvRDqYfVge5FNZioac5mCr/xrLt6ln2x9Jbm7Aw2GBsIP2XmHBi78Udg+OUzQ7gHixsEhZcW0l9KccvJFpgbhnl1qOeNGkSAGvXrg3WNGGiyeGn/4Zg/adKOOJq4HGsd7EH630txGZI1xOnA7/H9JxuwBzYoYlaVAvcMThO2bxIdBhlN+UNSr6N9TjuAf6H6gu1vUl0D6Y/sKWsIw0ePBiA2bPDQsknYdk5o4GhWH2Myyhev0Cxuhq5PY4O4P/Ksqs2DMJCR0fRV4Zl3TE4TtkUqrtcak3mV7Gihc9ipUwWA7cRne8fpgN4AfhDsE8hBdGPES3F0U6lgn4zZ87MWXMYVor9CqwmRSlzBdrJTgENk298wqkl7hgcp2wOJvpJfADFByW3Y/IQD2A9jMxxOrAQ1eMF9t2DzQd4BKtrtQSTrX49T/tT6T7Q24ilipZfleyYY45hzZo1Ze/XnUzKahRDqnB8Jy6xHIOINIvIH0Xk5eB1aJ52HSKyPFgWhNYfICJLRWS1iNwXlAF1nDpnAPDN4HUgdrNtBD5LdE3mTdikqO8DP8bqNbyNhY7CaqJKYRXWZ7AQUGbcoAN7+n6IaEc1EiuKOAbrOQzCwj9fK/zxAEtFfRBzRIuA9yMGoCtFgMPp3rvqh016c5ImloieiPwU2Kqq14vIVcBQVZ0R0W67qnZ7RBGRecB8Vb1XRG4BnlXVm4ud10X0nPpgBxYK2okNSO4b0eZ14GbsJt6f7qGdBizbJUMz+Svc3olVPMulEZvAFXX+SngRk8bO1EowLaOtW09n2LAD2LJlC83NcbWfFCtq9Bx2bRqxGH6UY3WqRa1E9CZjpZcIXksusiomunIycH8l+ztO8gzCZtieRP6bciZk1EB0vL+Trl5DIya4l49CA5+ljm0UoxMrlxmupqbAbpqbXwRg3rx5VTiPYBPezsG0h76BO4X6Ia5jaFHVTH7ZRiy5OYomEVkmIk+KSObmPwzYpqqZb+A6YL+Y9jhOnZGRhyhUjyFTm2A89tScj4lETw7bi+qpt75P/hKb64CoAeg4NGAhuXTWq+itFM29EpGFRKtFXRP+Q1VVRPLFpfZX1fUi0gosEpGVWD2+khGR6Vj6A2PHFlJQdJx6ogkLOXUQXchnACYkN4riMgvjsdDUS8HfDdhP+CsRx41jb76f8UBaW1vxMG7vp2iPQVVPVdXxEcuDwCYRGQUQvG7Oc4z1wesabOrlkdgo2kdFJOOcRmMjXvnsuE1V21S1bcSIEWV8RMdJkky5yA7shhu+6TZi0dO/ozTtHcFSQi/AorBfwuYNVLOW9EBsxm8UHzBt2kVVPJdTr8QNJS0ALgzeX4ilMWQhIkNFZGDwfjhwAvC82qj3Y3SlSETu7zjp5gvYc1B/7OfWiYV+jsIymyrJwhke7DeO6o0thBlD91uDAA1c89Z37a9rBPmeLU7vI+40vuuBeSIyDevjng0gIm3Apap6CXAIcKuIdGLftutV9flg/xnAvSLyQywXr5rBS8epA/phA6yTsBTVYdS/MucusgfLrZcj35tuUkFgmoGHEawX9Np60ohy4hLLMajqFqwKR+76ZViFblR1MZa0HLX/GuDYODY4TjrYi0omlSXDSCzMtRubM9HZvcnrfOgYnN5H3xD+cBynDMZgWU5vEukUriA9ytlORbgkhuM4OQg2RSlPeGgfsufkOb0OdwyO40TQn0oK+ji9A3cMjuPkIXv6kl57Q2QrH3juffgYg+M4eTgZmIfNhFZA0Gt/AXwdm5Dn9FbcMTiOk4cW4Dys+NBmTA+qjerJbzj1ijsGx3EKMBSbpOf0JXyMwXEcx8nCHYPjOD1Ari6UkyY8lOQ4qaUTkyt7EJPLHgNcDByRoE0bgVlYAZ5+WKnT8/GJD+nCewyOk1rmYllD72FP52ux0qEvJmTPB8C1wCrMae0BFgM/wnsP6cIdg+Okkl3A74LXMLuxmtJJ8Hhw/rATaMekNVYnYpFTGe4YHCeVvEP+n++6WhoS4jXMMUSRt9SKU4e4Y3CcVDKU/OGZ0bU0JMQBWEW6KLxqb5pwx+A4qWQgVsFtYM76AVj9hyT4DGZPuHhPf8xRHZSIRU5luGNwnNTy91htrL2xm/FY4N+AgxOyZwjwfWAClpE0EDgRuJrq1aR2aoGnqzpOahGsZvSUpA0JsS9wZdJGODGJ1WMQkWYR+aOIvBy8Do1o8zkRWR5adorIlGDbLBF5NbStkgK4juM4ThWJG0q6CviTqo4D/hT8nYWqPqaqE1V1IibX+DfgD6EmV2a2q+rymPY4juM4MYnrGCYDdwXv76J4n/ZrwCOq+reY53Ucx3F6iLiOoUVVNwTvN2I6vYU4B5uuGeY6EVkhIj8TkdwUC8dxHKfGFB18FpGF5JZyMq4J/6GqKiJ5572LyCjgcODR0OqrMYcyALgNmIGlNUTtPx2YDjB27NhiZjuO4zgVUtQxqOqp+baJyCYRGaWqG4Ib/+YChzobeEBV94SOnelt7BKRO4F/KWDHbZjzoK2tzYVXHMdxeoi4oaQFwIXB+wsxmcd8nEtOGClwJohIJu9uVUx7HMdxnJiIauUP3yIyDJN3HAu8DpytqltFpA24VFUvCdp9HHgCGKOqnaH9FwEjsITs5cE+20s471vB+eqF4cDbSRtRAWm0O402QzrtTqPNkE67a2Xz/qo6olijWI7BMURkmaq2JW1HuaTR7jTaDOm0O402QzrtrjebXRLDcRzHycIdg+M4jpOFO4bqcFvSBlRIGu1Oo82QTrvTaDOk0+66stnHGBzHcZwsvMfgOI7jZOGOoQJE5Osi8pyIdAapufnanS4iL4rIahHpJjBYa0pRww3adYQUbxfU2s7AhoLXTkQGish9wfalQUp04pRg90Ui8lbo+l6ShJ05Nt0hIptFJHIekRi/DD7TChE5qtY2RthUzOaTROTd0HX+bq1tjLBpjIg8JiLPB/ePb0e0qY9rraq+lLkAh2DVUP4MtOVp0w94BWjFJD+eBQ5N2O6fAlcF768CfpKn3faE7Sx67YBvAbcE788B7quD70Updl8E3JS0rTk2nQgcBazKs/0M4BFsvtFxwNIU2HwS8Luk7cyxaRRwVPD+I8BLEd+PurjW3mOoAFX9q6q+WKTZscBqVV2jqruBezE12iQpVw03KUq5duHPcj9wSjCDPknq8X9eFFV9HNhaoMlk4NdqPAl8NKNakBQl2Fx3qOoGVX06eP8+8Fe6F8Oui2vtjqHn2A94I/T3OpKviF6qGm6TiCwTkSczRZVqTCnX7sM2qtoOvAsMq4l1+Sn1f/7VIExwv4iMqY1psajH73IpHC8iz4rIIyJyWNLGhAlCn0cCS3M21cW19tKeeSikKquqhTShEqVKarj7q+p6EWkFFonISlV9pdq29lEeAuaq6i4R+SbW6zk5YZt6I09j3+PtInIG8F/AuIRtAkBE9gJ+C1yuqu8lbU8U7hjyoAVUZUtkPRB+GhwdrOtRCtldqhquqq4PXteIyJ+xJ5taOoZSrl2mzToR6Q/sA2ypjXl5KWq3qoZtvB0b96l3EvkuxyF8w1XVh0XkP0VkuKomqqEkIo2YU7hHVedHNKmLa+2hpJ7jL8A4ETlARAZgA6SJZPiEKKqGKyJDMwWTRGQ4cALwfM0sNEq5duHP8jVgkQajdwlS1O6cePGZWJy53lkAXBBkzBwHvBsKSdYlIjIyM+YkIsdi97pEHxwCe2YCf1XVG/M0q49rnfRIfRoX4Cws9rcL2AQ8Gqz/GPBwqN0ZWObBK1gIKmm7h2G1uV8GFgLNwfo24Pbg/aeAlVhGzUpgWkK2drt2WBGnM4P3TcBvgNXAU0Br0te3RLt/DDwXXN/HgE/Ugc1zgQ3AnuB7PQ24FFM7BsuQ+VXwmVaSJxOvzmz+x9B1fhL4VB3Y/GlAgRWYmvTy4PtSd9faZz47juM4WXgoyXEcx8nCHYPjOI6ThTsGx3EcJwt3DI7jOE4W7hgcx3GcLNwxOI7jOFm4Y3Acx3GycMfgOI7jZPH/fbwJ/i+jXMoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9de043d748>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attack = HighConfidenceLowUncertainty(m_art,unc_increase=0.9,min_val=0.0,max_val=2.0)\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PGD on Guassian process classification\n",
    "To conclude, we show how to compute PGD adversarial exmples on our model. We observe that as before, many attempts fail, as the model misleads the attack to take a wrong path away from the boundary. In this case, examples are classified as default: either of the two classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9de045eef0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attack = ProjectedGradientDescent(m_art,eps=0.5,eps_step=0.2) #TODO,targeted=True)\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
